package operation.java4;

import org.junit.Assert;
import org.junit.Test;


public class TestSimple {

    /** 
     * test d'addition de 2 nombres 
     */
    @Test
    public void testAdditionAvecDeuxNombres() {
        final long lAddition = Operations.additionner(new long[]{10, 20});
        Assert.assertEquals(30, lAddition);
    }

    /** 
     * test d'addition de 5 nombres 
     */
    @Test
    public void testAdditionAvecCinqNombres() {
        final long lAddition = Operations.additionner(new long[]{256, 512, 1024, 2048, 4096});
        Assert.assertEquals(7936, lAddition);
    }

    /** 
     * test de multiplication de 2 nombres 
     */
    @Test
    public void testMutiplicationAvecDeuxNombres() {
        final long lMultiplication = Operations.multiplier(new long[]{10, 20});
        Assert.assertEquals(200, lMultiplication);
    }
 
    /** 
     * test de multiplication de 5 nombres 
     */  
    @Test
    public void testMutiplicationAvecCinqNombres() {
        final long lMultiplication = Operations.multiplier(new long[]{256, 512, 1024, 2048, 4096});
        Assert.assertEquals(1125899906842624L, lMultiplication);
    }
    
    /** 
     * test de diviser de 2 nombres 
     */  
    @Test
    public void testDiviserAvecDeuxNombres() {
        final long lDiviser = Operations.diviser(new long[]{500, 5});
        Assert.assertEquals(100, lDiviser);
    }
    
    /** 
     * test de diviser de 2 nombres
     */  
    @Test
    public void testDiviserAvecCinqNombres() {
    	final long lDiviser = Operations.diviser(new long[]{120, 5, 4, 3, 2});
        Assert.assertEquals(1, lDiviser);
    }
    
    /** 
     * test de soustraire de 5 nombres
     */  
    @Test
    public void testSoustraireAvecCinqNombres() {
    	final long lSoustraire = (long) Operations.soustraire(new long[]{120, 1, 1, 1, 1});
        Assert.assertEquals(116, lSoustraire);
    }
    
    /** 
     * test de soustraire de 2 nombres
     */  
    @Test
    public void testSoustraireAvecDeuxNombres() {
    	final long lSoustraire = (long) Operations.soustraire(new long[]{785, 423});
        Assert.assertEquals(362, lSoustraire);
    }
    
    /** 
     * test de soustraire de 2 triangles (2 tableau de long)
     */  
    @Test
    public void testPythagoreAvecDeuxTab() {
    	final Boolean[] lPythagore = Operations.pythagore(new long[][]{new long[]{3,4,5},new long[]{3,4,5}});
    	final Boolean[] lResult = new Boolean[]{true,true};
        Assert.assertEquals(lResult, lPythagore);
    }
    
    /** 
     * test de soustraire de 1 triangle (1 tableau de long)
     */  
    @SuppressWarnings("deprecation")
	@Test
    public void testPythagoreAvecUnTab() {
    	final Boolean[] lPythagore = Operations.pythagore(new long[][]{new long[]{3,4,5}});
    	final Boolean[] lResult = new Boolean[]{true};
        Assert.assertEquals(lResult, lPythagore);
    }
    
    
}
